// 云函数入口文件
const cloud = require('wx-server-sdk');

cloud.init();

// 获取数据库引用
const db = cloud.database();
const _ = db.command;

// 云函数入口函数
exports.main = async (event, context) => {
  const { userInfo, openid } = event; // 获取传入的 userInfo 和 openid

  try {
    // 检查传入的数据是否有效
    if (!openid || !userInfo) {
      return {
        data: {
          status: 400,
          message: '数据不完整'
        },
      };
    }

    // 更新或者插入用户信息
    let result;
    result = await db.collection('user').where({ openid: openid }).update({
      data: {
        userInfo: userInfo,
        lastLoginTime: new Date()
      }
    });

    // 如果没有找到匹配的记录，则插入新的用户信息
    if (result.stats.updated === 0) {
      await db.collection('user').add({
        data: {
          openid: openid,
          userInfo: userInfo,
          lastLoginTime: new Date()
        }
      });
    }

    // 查询用户最新信息
    const user = await db.collection('user').where({ openid: openid }).get();
    
    // 确保有用户数据
    if (user.data && user.data.length > 0) {
      // 返回成功消息和用户信息
      return {
        data: {
          status: 200,
          message: '登录成功',
          userInfo: user.data[0] // 返回用户信息
        },
      };
    } else {
      // 如果查询不到用户信息，返回错误
      return {
        data: {
          status: 500,
          message: '无法获取用户信息'
        },
      };
    }

  } catch (err) {
    console.error(err);
    return {
      data: {
        status: 500,
        message: '服务器错误'
      },
    };
  }
};